import { createRouter, createWebHistory } from 'vue-router'
import { useUserStore } from '@/stores/index'
import Login from '@/views/login/LoginPage.vue'
import Layout from '@/views/layout/LayoutContainer.vue'
import ArticleChannel from '@/views/article/ArticleChannel.vue'
import ArticleManage from '@/views/article/ArticleManage.vue'
import UserProfile from '@/views/user/UserProfile.vue'
import UserAvatar from '@/views/user/UserAvatar.vue'
import UserPassword from '@/views/user/UserPassword.vue'

// createRouter 创建路由实例，===> new VueRouter()
// 1. history模式: createWebHistory()   http://xxx/user
// 2. hash模式: createWebHashHistory()  http://xxx/#/user

// vite 的配置 import.meta.env.BASE_URL 是路由的基准地址，默认是 ’/‘
// https://vitejs.dev/guide/build.html#public-base-path

// 如果将来你部署的域名路径是：http://xxx/my-path/user
// vite.config.ts  添加配置  base: my-path，路由这就会加上 my-path 前缀了

const routes = [
  { path: '/login', component: Login },
  {
    path: '/',
    redirect: '/article/manage',
    component: Layout,
    children: [
      { path: '/article/manage', component: ArticleManage }, //文章管理
      { path: '/article/channel', component: ArticleChannel }, //频道管理
      { path: '/user/profile', component: UserProfile }, //个人详情
      { path: '/user/avatar', component: UserAvatar }, //更换头像
      { path: '/user/password', component: UserPassword } //重置密码
    ]
  }
]

const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes
})

// 登录访问拦截 默认是直接放行的
// 根据返回值决定是放行还是拦截
// 返回值
//  1.undefined / true 直接放行
//  2.false 拦回 from 的地址
//  3.具体路径 或者 路径对象 「拦截到对应的地址」
//  ”/login“   {name:"login"}
router.beforeEach((to) => {
  const userStore = useUserStore()
  if (!userStore.token && to.path !== '/login') return '/login'
})

export default router
